// 引入koa
const Koa = require('koa')
// 引入路由模块
const Router = require('koa-router')
// 引入外部路由器
const userRouter = require('./routes/user')
// 引入生成图片验证码模块
const svgCaptcha = require('svg-captcha')
// 引入静态资源中间件
const static = require('koa-static')
// 引入session模块
const session = require('koa-session')


// 创建WEB服务器
const app = new Koa()
// 实例化路由对象，创建路由器对象
const router = new Router()
// 托管静态资源，如果客户端请求静态资源回到public目录下查找
app.use(static('public'))
// session需要提供key，生成用的，里边的值可以自定义(秘钥)
app.keys = ['xxxx  dfsfd sdff']
// 使用session
app.use(session({},app))



// 注册路由
// 请求方式:get   请求的URL:/index
router.get('/index', (ctx) => {
    // 获取get传递的参数
    // console.log(ctx.request.query)   //对象格式 {a:1,b:2}
    // console.log(ctx.request.querystring)  //原生的参数  a=1&b=2
    // 简化版
    console.log(ctx.query)
    console.log(ctx.querystring)
    // 响应
    ctx.body = '<h1>这是首页</h1>'
})
// params传参需要设置参数名
router.get('/search/:a/:b', (ctx) => {
    // 获取params传参
    console.log(ctx.request.params);
    ctx.body = '<h3>商品搜索</h3>'
})

router.get('/checkcode', (ctx) => {
    // 生成图片验证码
    var captcha = svgCaptcha.create({
        color: true,  //是否有颜色
        noise: 3,  //干扰线的数量
        width: 120,  // 宽度
        height: 40,  //高度
        fontSize: 30, //字体大小
        background: '#CCC'
    });
    console.log(captcha);
    // captcha.text 生成的随机验证码
    // captcha.data   生成的svg内容
    // 生成的随机验证码保存到session
    ctx.session.code = captcha.text

    // 响应的内容类型
    ctx.response.type = 'image/svg+xml';
    ctx.body = captcha.data;
})

router.get('/login', (ctx) => {
    // 如果收到客户端用户输入的验证码，用输入的值和session保存的值进行比较
    if(ctx.query.num === ctx.session.code){
        ctx.body = '验证码正确'
    }else{
        ctx.body = '验证码错误'
    }
    // 获取session，是全局的
    console.log(ctx.session)
})






// 将这组路由器对象挂载到路由器
app.use(router.routes())
// 挂载路由器
app.use(userRouter.routes())

// // 通过应用级中间件拦截请求，做出响应
// app.use((ctx) => {
//     // ctx 上下文，包含了请求和响应
//     // 设置响应到客户端的内容
//     ctx.body = '<h1>Hello World</h1>'
// })




// 设置端口
app.listen(3000, () => {
    console.log('服务器启动成功');
})
